package cn.krund.lyc.hotlerobot.Ros.service.bytetojsoninfohandler;

import java.util.ArrayList;
import java.util.List;

import cn.krund.lyc.hotlerobot.Ros.service.communicationinfo.RosProtocolInfo;
import cn.krund.lyc.hotlerobot.service.RemoteControlService;

/**
 * @包名: cn.krund.lyc.hotlerobot.robot.service.bytetojsoninfohandler
 * @作者: 刘育成
 * @时间: 2018/4/2  17:13
 * @org: 克路德人工智能
 * @描述: TODO
 * @fileName: ByteToJsonInfoHandlerContext
 */

public class ByteToJsonInfoHandlerContext implements IByteToJsonInfoHandler {
    private static List<IByteToJsonInfoHandler> byteToJsonInfoHandlers;             // 所有需要处理的类集合
    private IByteToJsonInfoHandler currentHandler = null;       // 当前需要处理的类

    public ByteToJsonInfoHandlerContext(RosProtocolInfo xu4ProtocolInfo) {
        getAllByteToJsonInfoHandlers();
        for (IByteToJsonInfoHandler handler : byteToJsonInfoHandlers) {
            if (handler.isHandler(xu4ProtocolInfo)) {
                this.currentHandler = handler;
            }
        }
    }

    @Override
    public boolean isHandler(RosProtocolInfo rosProtocolInfo) {
        if (this.currentHandler == null) return false;

        return this.currentHandler.isHandler(rosProtocolInfo);
    }

    @Override
    public void handler(RemoteControlService service, RosProtocolInfo rosProtocolInfo) {
        if (this.currentHandler == null) return;
        this.currentHandler.handler(service, rosProtocolInfo);
    }

    /**
     * 获取所有需要byte转json的处理类
     */
    private static void getAllByteToJsonInfoHandlers() {
        if (byteToJsonInfoHandlers != null) return;
        byteToJsonInfoHandlers=new ArrayList<>();
        
    }
}
